I and others teach standard industry 'short courses' (for those not familiar with these, you pack a university semester course into one 40hr work-week), and have found them successful. However mastery takes experience, and there's no substitute for time. Laboratory time is essential for any OOP course, since it allows concepts to 'gel'.
Generally people start out wondering why the company has devoted a full 5 days to something as trivial as another programming language. Then about half way through, they realize they're not being taught just a new syntax, but an entirely different way of thinking and programming and designing and . . . . Then they begin to feel dumb, since they can't quite grasp what is being said. Then they get mad and wonder why the course isn't taught in two or three weeks instead. Finally about Wednesday afternoon the lights go 'clink', and their faces brighten, and they 'get it'. By Friday, they've had numerous laboratory 'experiments' and they've seen both sides of reusable components (both how to code *from* reuse, and how to code *for* reuse). It's different in every time I teach, but the 'reuse' aspect is generally the most rewarding, since it has the greatest potential to improve software production's overall economics. Full semester courses have the same overall contact hours (14wks * 3hrs/wk is around 40hrs), but the slower rate allows students to retain more as well as to go through more material. For example, I taught the equivalent of my 'C++ as an OOPL' course, and portions of my 'OO Design Methodology' course, in a single semester graduate course. Both courses take roughly a week when taught in the condensed style. It takes 6 months to 'master' C++/OOP. Less if there is already a body of experts and code that programmers have regular access to, more if there isn't a 'good' general purpose C++ class library available.